Conversation
Refactor setup script to remove 'clawdius' user references and adjust prompts for SSH keys and Git configuration. Update paths for Bun and uv installations to use the current user's home directory.
- Replace OpenClaw CLI (npm) with Claude Code CLI (curl installer) - Rename ubuntu/ directory to sandbox/ for generic isolation env - Remove MCP server files (index.js, package.json, entrypoint.sh, .example.env) - Update all docs, links, and branch refs to Claude Code - Simplify docker-compose (remove port mapping and env_file) - Update CI workflow tag pattern to sandbox-* Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Move Dockerfile, .dockerignore, .gitignore to repo root - sandbox/ now only contains setup.sh (files copied into container) - Add COPY sandbox/ /sandbox/ to Dockerfile - Update build contexts to root in docker-compose, Makefile, CI workflow - Remove sandbox/README.md (consolidated into root README) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Create sandbox user with passwordless sudo in Dockerfile - Install Bun, uv, Claude Code as sandbox user via su - - System packages (Node.js, gh) remain root-level - Git config, SSH keys, GH auth target sandbox user - Fix PATH issues ($HOME instead of /home/$USER) - Fix Claude Code install (pipe to bash, not sh) - Replace clawdius references with sandbox Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Bind mount ./sandbox to /home/sandbox for persistence across restarts - Copy sandbox files to /home/sandbox owned by sandbox user in Dockerfile - Add make rebuild (no-cache build + restart) - Rename SANDBOX_NAME default to claude Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…docs - Move setup.sh to install/ (copied into image at build) - Add workspace/ with CLAUDE.md (bind-mounted for persistence) - Remove sandbox/ directory - Install all tools system-wide as root (Bun, uv, Claude Code via npm) - Bake --dangerously-skip-permissions alias into Dockerfile - Mount only workspace/ to keep sandbox user home clean - Update README with full setup docs, Makefile targets, architecture - Update CLAUDE.md with agent-facing environment context Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CI triggers on claude-v* tags (e.g. claude-v1.0.0) - Images tagged as ghcr.io/ruska-ai/sandbox:claude-v1.0.0 + claude-latest - Simplify Makefile IMAGE to ghcr.io/ruska-ai/sandbox:claude-$(TAG) - Document release process in README Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Install tmux, nano, Docker CLI + Compose by default - Add opt-in prompts for Codex, Pi Agent, and AgentMail CLI - AgentMail API key stored in .bashrc (silent input, not in history) - Create AGENTS.md as canonical instructions, symlink CLAUDE.md to it - Add .claude/ and .codex/ config dirs in workspace - Dockerfile: add codex/pi aliases, docker group for sandbox user - docker-compose: mount Docker socket, add host.docker.internal - Makefile: NAME variable for multiple named sandboxes (make NAME=foo run) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CI workflow triggers on oh-v* tags, pushes to ghcr.io/ruska-ai/open-harness - Makefile NAME defaults to open-harness - README fully updated with open-harness branding, multi-agent docs, named sandboxes Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add entrypoint.sh that syncs the container's docker group GID to the host socket's GID at startup, then drops to the sandbox user via gosu. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- DOCKER=false by default; pass DOCKER=true to mount socket + host networking - Split compose into base and docker-compose.docker.yml override - NAME is now required (no default) — errors clearly if missing - shell/stop/clean print helpful messages when container not found Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds periodic heartbeat runner, agent persona (SOUL.md), and long-term memory (MEMORY.md + daily logs) to give sandbox agents persistent identity and recurring task execution. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tion headers - Add 'Why Open Harness?' section with 6 numbered core intentions - Add Key Benefits table with emoji prefixes - Add emoji to all section headers for visual clarity - Add horizontal rules between major sections - Add custom-banner-extension plan to .claude/plans
- Add 'make quickstart' target: builds image, starts container, provisions all tools non-interactively, prints next steps - Move quickstart to top of README, before 'Why Open Harness?' - Consolidate old Install/Docker Quick Start into 'More Ways to Run' - Add quickstart to Makefile Targets table
Also moves .pi/ config into workspace/ and cleans up HEARTBEAT.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix archive path: .ralph/archive/ → .ralph/archives/YYYY-MM-DD/<feature>/ (ralph.sh, implement SKILL.md, CLAUDE.md all aligned) - US-FINAL now requires: dev server 200, public URL 200, archive verification - Add git safety rules to .ralph/CLAUDE.md (never clone, never init) - Fix tmux launch to use gosu sandbox (Claude refuses --dangerously-skip-permissions as root) - Add validateArchivePath guard + 4 tests (39 total) - Seed roadmap with 2 items (#4 health endpoint, #5 OG meta tags) - Add @prisma/adapter-pg dependency - Clean nested .git Ralph left in workspace/next-app/ - Harden .gitignore for src/generated/, repo-clone artifacts, .ralph/.claude/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- TOOLS.md: .ralph/archive/ → .ralph/archives/ - implement/SKILL.md reference table: .ralph/archive/ → .ralph/archives/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Regenerate package-lock.json to include @prisma/adapter-pg transitive deps (npm ci was failing: missing @emnapi/runtime, @emnapi/core) - Reorder CI: Prisma generate + migrate BEFORE lint/type-check/build (type-check depends on generated Prisma client types) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Pre-commit now runs test:setup (8 stack health checks) after unit tests - AGENTS.md rule #11: run /diagnose at end of every session - Ralph pre-submit validation step 5: all 8 diagnose checks must pass Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat(#4): add /api/health endpoint for runtime monitoring
- Add jq to base apt-get install in Dockerfile (fixes notify_slack.sh hook) - Archive completed feat/4-api-health Ralph run to .ralph/archives/ - ralph.sh: archive on completion + max-iteration exit, use mv instead of cp - Sync next-env.d.ts and MEMORY.md with latest changes Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…data to root layout Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…-postgres-shadcn into agent/next-postgres-shadcn
…n into agent/next-postgres-shadcn
CI was failing because auto-generated Prisma client files don't conform to Prettier style. Added .prettierignore to skip src/generated/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
src/generated/ is a build artifact from `prisma generate` — should not be tracked. Also add config files (.prettierignore, .gitignore, .eslintrc*) to CI path triggers so config changes are validated. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move SSH key mounting from base compose into two mutually-exclusive overlays (host mount vs generated keypair), add git worktree volume overlay, broaden entrypoint ownership fix, and clear stale generated Prisma client before regenerating. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: reproducible Mom Slack bot integration
Prevents mom from silently skipping on container restart when Docker Compose doesn't inject the tokens. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Prevent startup.sh from being committed — it sources runtime tokens from environment variables and should not be version-controlled. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sync strategy: - workspace/, .devcontainer/, install/, .github/, .claude/skills/ → ours (next-postgres-shadcn content) - cli/, packages/, root package.json → theirs (latest open-harness SDK) - Root AGENTS.md, README.md → theirs (orchestrator docs) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
sync: merge next-postgres-shadcn development into open-harness development
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
cli/): new CLI built on Pi Agent SDK with subcommands for sandbox lifecycle management, replacing the root Makefilepackages/sandbox/): reusable library with Docker orchestration tools, config management, and sandbox extensions.devcontainer/): Debian-based orchestrator container with Claude Code, Codex CLI, Docker, Node.js, Bun, uv, and GitHub CLI pre-installed.github/workflows/ci.yml): lint + test workflow for both packages with Husky pre-commit hooks.pi/→.openharness/, updated banner and extension namingTest plan
npm installandnpm run buildincli/andpackages/sandbox/npm testpasses in both packagesdocker compose -f .devcontainer/docker-compose.yml up -d --buildstarts cleanlydocker exec orchestrator claude --versionandcodex --versionreturn versions🤖 Generated with Claude Code